package com.night.icm.service.business.service;

import com.night.icm.common.utils.PageDataDTO;
import com.night.icm.common.utils.TermType;
import com.night.icm.model.business.StudentCourseGradeDTO;

import java.util.List;

/**
 * StudentCourseGradeService
 *
 * @author Liao ZhiYong
 * @date 2020/2/15
 */
public interface StudentCourseGradeService {

    /**
     * 分页查找学生课程成绩
     *
     * @param page        页号，从0开始
     * @param size        每页记录条数
     * @param sort        排序字段，例如：字段1,asc,字段2,desc
     * @param academyName 学院名称
     * @param className   班级名称
     * @param studentName 学生姓名
     * @param courseName  课程名称
     * @param teacherId   授课老师id
     * @param year        所属年度
     * @param termType    所属学期
     * @param isCorrect   是否批改
     * @return 学生课程成绩
     */
    PageDataDTO<StudentCourseGradeDTO> findOnePage(int page, int size, String sort, String academyName, String className, String studentName, String courseName, String teacherId, String year, TermType termType, Boolean isCorrect);

    /**
     * 提交批改的学生成绩
     *
     * @param id                    学生课程成绩id
     * @param studentCourseGradeDTO 学生课程成绩
     * @return 学生课程成绩
     */
    StudentCourseGradeDTO complete(String id, StudentCourseGradeDTO studentCourseGradeDTO);

    /**
     * 模糊查询学生课程成绩
     *
     * @param studentCode 学生学号
     * @param year  学年
     * @param termType 学期
     * @return 学生课程成绩
     */
    List<StudentCourseGradeDTO> search(String studentCode, String year, TermType termType);

    /**
     * 通过id查找学生课程成绩
     *
     * @param id 学生课程成绩id
     * @return 学生课程成绩
     */
    StudentCourseGradeDTO findById(String id);

    /**
     * 根据学生id查找学生所有课程成绩
     *
     * @param studentId 学生id
     * @return 学生所有课程成绩
     */
    List<StudentCourseGradeDTO> findAllByStudentId(String studentId);

    /**
     * 修改已批改的学生成绩
     *
     * @param id                    学生课程成绩id
     * @param studentCourseGradeDTO 学生课程成绩
     * @return 学生课程成绩
     */
    StudentCourseGradeDTO update(String id, StudentCourseGradeDTO studentCourseGradeDTO);
}
